1
スマートポインターとメタデータの定義
AI034Lesson 15
00:00

A スマートポインター は、ポインターのように振る舞う抽象データ構造ですが、追加の メタデータ および、その指すデータを管理するためのロジックを備えています。標準的な参照(&T)は単なるメモリアドレスである——「無知な」ポインターです。一方、 スマートポインターのパターン Rustでは、所有権、アクセス制御、自動クリーンアップのためのカスタムルールを持つポインターを構造体でラップすることで実現されています。

メタデータの利点

標準的な参照を 基本的な家の鍵と考えてください。それは入り口を提供しますが、それ以上のことはありません。一方、スマートポインターは キーカードシステムです。カードにはメタデータ(アクセスログ、権限、有効期限)が記録され、あなたが去る際にドア(クリーンアップ)を自動的にロックできます。

通常の参照 (&T)[ アドレス ]スマートポインター (Box/Rc)メタデータ:参照カウンター / 長さ[ アドレス ]フェリス 🦀?エラー:複数所有権はここでは失敗します!let z = x; let y = &x; // メタデータが不足しています

コアとなるロジック

Rustでは、スマートポインターは Deref および Drop トレイトを実装することで定義されます。これにより、アクセス時や破棄時にカスタムロジックを実行しながら、参照のように振る舞うことができます。

$$\text{ポインター} + \text{メタデータ} + \text{Deref/Drop トレイト} = \text{スマートポインター}$$
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>